package com.xls.commonlibrary.util.encrypt;
/*
 *@title EncryptionDecryptionTest
 *@description  对称加密
 *@author SZH
 *@version 1.0
 *@create 2023/9/18 13:36
 */

import android.text.TextUtils;

import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import cn.hutool.crypto.symmetric.DES;


public class EncryptUtil {


    /**
     * 加密aes
     */
    public static String aesEncrypt(String text) {


        if (TextUtils.isEmpty(text)) {
            return "null";
        }

//        String text = "孙子浩@2342423！东风股份华发股份大概fddg";

        // key：AES模式下，key必须为16位
        String key = "XLS2023070191120";
        // iv：偏移量，ECB模式不需要，CBC模式下必须为16位
        String iv = "XLS2023070191120";

        // AES aes = new AES(Mode.ECB, Padding.PKCS5Padding, key.getBytes());
        AES aes = new AES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes());

        // 加密并进行Base转码
        String encrypt = aes.encryptBase64(text);
        System.out.println(encrypt);

        // 解密为字符串
//        String decrypt = aes.decryptStr(encrypt);
//        System.out.println(decrypt);

        return encrypt;

    }

    /**
     * 解密aes
     */
    public static String aesDecrypt(String encryptedText) {

        if (TextUtils.isEmpty(encryptedText)) {
            return "null";
        }

//        String text = "孙子浩@2342423！东风股份华发股份大概fddg";

        // key：AES模式下，key必须为16位
        String key = "XLS2023070191120";
        // iv：偏移量，ECB模式不需要，CBC模式下必须为16位
        String iv = "XLS2023070191120";

        // AES aes = new AES(Mode.ECB, Padding.PKCS5Padding, key.getBytes());
        AES aes = new AES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes());

        // 加密并进行Base转码
//        String encrypt = aes.encryptBase64(text);
//        System.out.println(encrypt);

        // 解密为字符串
        String decrypt = aes.decryptStr(encryptedText);
        System.out.println(decrypt);

        return decrypt;

    }


    // des方式 先不用
//    public static void des() {
//        String text = "HelloWorld";
//
//        // key：DES模式下，key必须为8位
//        String key = "XLS2023070191120";
//        // iv：偏移量，ECB模式不需要，CBC模式下必须为8位
//        String iv = "XLS2023070191120";
//        DES des = new DES(Mode.ECB, Padding.PKCS5Padding, key.getBytes());
//        String encrypt = des.encryptBase64(text);
//        System.out.println(encrypt);
//
//        String decrypt = des.decryptStr(encrypt);
//        System.out.println(decrypt);
//    }

}
